package com.itheima.d2_xml.Dom4JTest1Practice;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.ArrayList;
import java.util.List;

/**
 * 目标：掌握使用Dom4j框架解析XML文件。
 *
 * 需求：
 * 利用Dom4J框架，将contacts.xml文件中的联系人数据，解析出来，封装成List集合，并遍历输出
 *
 */
public class Dom4JTest1Practice {
    public static void main(String[] args) throws Exception {
        //TODO 将xml文件夹中的contacts.xml内容解析出来

        //1、创建Contact类型，用来表示联系人数据

        //2、解析XML中的联系人封装为Contact对象，放到集合中
        //集合，用来保存解析后的Contact对象
        ArrayList<Contact> contactsList = new ArrayList<>();
        //开始解析
        SAXReader saxReader = new SAXReader();
        //文档对象
        Document doc = saxReader.read("day11properties-xml-log-thread/xml/contacts.xml");
        //获取文档根元素
        Element rootElement = doc.getRootElement();
        //获取所有子元素
        List<Element> allContacts = rootElement.elements("contact");
        //遍历并解析数据，封装到Contact对象
        for (Element contactEle : allContacts) {
            //联系人对象
            Contact contact = new Contact();
            //解析属性
            String id = contactEle.attributeValue("id");
            //把字符串的id解析为int类型，并设置到对象中
            contact.setId(Integer.parseInt(id));
            String vip = contactEle.attributeValue("vip");
            //把字符串的vip解析为boolean类型，并设置到对象中
            contact.setVip(Boolean.parseBoolean(vip));
//          //解析子标签的文本
//            String name = contactEle.elementText("name");
            contact.setName(contactEle.elementText("name"));
            contact.setGender(contactEle.elementText("gender"));
            contact.setEmail(contactEle.elementText("email"));

            //解析完对象后，将对象添加到集合
            contactsList.add(contact);
        }
        contactsList.forEach(System.out::println);
    }



}
